Les modèles du Type World

 
 
 
Lorsqu'on crée un nouveau modèle de vêtement, il faudra également créer un world model. Ce modèle est utilisé pour figurer le vêtement lorsque celui ci est déposé au sol ou sur l'étalage d'un marchand.
 
C'est un modèle qui est différent des modèles de vêtement, car il doit avoir un volume pour la collision et pouvoir être activé par le joueur pour être ramassé.
 
La plupart du temps on va simplement créer un paquet ressemblant à des vêtements pliés, mais on pourrait aussi imaginer une boite, un paquet cadeau etc...
On peut également utiliser le modèle créé pour le vêtement et importer uniquement la géométrie sans le squelette.
 
Un modèle de type world est composé de trois éléments distincts, un squelette simple composé de deux os, la géométrie du paquet et la boite de collision.
 
Pour créer une world model on va simplement importer dans Blender un modèle existant de ce type, pui remplacer la géométrie par ce qu'on désire, lier celle ci au squelette et lier les sommets aux os, puis exporter le modèle au format .nif.
Ensuite avec NifSkope on va faire comme pour les modèle de vêtement, on va ouvrir un fichier originel et y importer notre géométie (NiTriShapeData, NiSkinData et NiSkinPartition) ajuster la position de la géométrie si nécessaire et ajuster les boites de collision à la taille du modèle.
 
 
Importation d'on modèle originel :
 
voici les différenst éléments du modèle: ici c'est le modèle pour le déshabillé.
 
Tout d'abord le squelette composé de deux os.
Puis les deux boite sde collision, ces boites sont dessinée dans Blender comme des Bounding Box (boite liées)
Mais ce sont des éléments particuliers, si on regarde le Button Window dans l'onglet Constraints on va voir qu'ils sont définits comme des Hinge (charnière) et qu'on a définit des axes de pivotement. Ceci est nécessaire pour que le comportement physique de l'objet soit pris en charge dans le jeu. On ne vas pas trop s'étendre sur ce sujet parce que de toute façon on ne va utiliser celles-ci mais celle du modèle nif d'origine qu'on va éditer avec NifSkope par la suite.
Finalement on a la géométrie du modèle qu'on va soit dessiner complètement ou qu'on va importer à partir du fichier nif du modèle de vêtement.
 
 
Importation du modèle de vêtement pour en extraire la géométrie:
 
 
Dans cet exemple je vais importer le modèle d'une paire de bottes que j'ai réalisé, c'est un exemple ou on peut importer la géométrie du modèle pour s'en servir dans le world model.
 
On a donc importé le modèle de botte avec son squelette qu'on va supprimer ainsi que le modèle de déshabillé dont on a plus besoin.
On se retrouve avec juste ce dont on a besoin pour finaliser le modèle et l'exporter. Si votre modèle comme celui-ci a des "trous", il faut les boucher sinon on verra à travers les bottes par endroits.
On va maintenant lier le modèle au squelette , on sélectionne le modèle puis le squelette et on fait CTRL P puis on choisi Armature et enfin Name Groups.
On va vérifier et assigner tous les sommets à un os du squelette pour être sur que tous les sommets sont bien liés à des os.
On verifie avec Weight Paint que c'est bien le cas.
Finalement on va exporter le modèle en prenant garde à ne pas exporter les Dismember Body Parts (voir la flèche rouge sur l'image suivante), sinon on risque d'avoir un message d'erreur. En effet on n'a pas les os fictifs pour le démembrement dans notre modèle alors ça peut poser problème.
 
Finalisation du World Model avec NifSkope :
 
 
On va procéder maintenant comme pour le modèle de vêtement, on va ouvrir un fichier originel fonctionnel et y copier nos données de géométrie.
 
On va ouvrir dans une fenêtre de NifSkope le modèle go.nif pa exemple.
 
On remarque que la structure est différente par rapport à un vêtement, tout d'abord c'est un BSFadeNode et pas un NiNode, ensuite on remarque les éléments destinés à la collision du modèle.
Si on ouvre le fichier qu'on vient d'exporter on remarque que la structure n'est pas valide, on va procéder par copie des données comme d'habitude.
On va copier NiTriShapeData, NiSkinData et NiSkinPartition exactement selon la même méthode que pour un vêtement.
Et on va les copier dans le world model valide.
On va procéder aux échanges de données de géométrie:
 
On va conparer l'ordre des os dans NiSkinInstance pour voir si ça correspond et corriger au besoin.
On n'a pas le même nombre d'os il faut corriger.
Après avoir modifié le nombre d'os, on va corriger l'ordre de ceux-ci.
Voilà, on a un modèle qui a été corrigé, mais il y a encore une mauvaise posture, il va falloir corriger ce problème. On va devoir donner des information de translation et de rotation pour remettre en place notre modèle.
 
On a fait une rotation de -90° pour réorienter les bottes correctement. Maintenant on va faire la translation, en fait on va remettre les valeurs à zéro.
Cette fois le modèle est centré sur l'origine avec la bonne orientation.
 
On a remarqué que les textures étaient faisses, on va remettre les bonnes textures:
 
Il faut encore ajuster les boites de collision pour que dans le jeu les collisions se fasse de manière réaliste et pour éviter des interpénétrations indésirables.
On va modifier la taille des boites dans bhkBoxShape, et la position dans bhkRigidBodyT.
 
On va faire de même pour l'autre boite :